package org.example.tree.utils;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import lombok.extern.slf4j.Slf4j;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

/**
 * @author zjt
 * @description
 * @date 2025/6/4 09:25
 */
@Slf4j
public class ExcelUtil {

    public static <T> List<T> importExcel(String filePath, Class<T> clazz) {
        try (FileInputStream inputStream = new FileInputStream(filePath)) {
            return EasyExcel.read(inputStream)
                    .head(clazz)
                    .autoCloseStream(true)  // 设置为true让EasyExcel自动关闭流
                    .sheet()
                    .doReadSync();
        } catch (IOException e) {
            log.error("读取本地Excel文件失败，文件路径: {}, 错误信息:", filePath, e);
            throw new RuntimeException("读取本地Excel文件失败");
        }
    }

    /**
     * 使用EasyExcel导出数据到本地Excel文件
     *
     * @param filePath 导出的文件路径（包含文件名）
     * @param dataList 要导出的数据列表
     * @param clazz    数据对象的Class
     * @param <T>      泛型类型
     */
    public static <T> void exportExcel(String filePath, List<T> dataList, Class<T> clazz) {
        // 使用自适应列宽策略
        EasyExcel.write(filePath, clazz)
                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                .sheet("Sheet1")
                .doWrite(dataList);
    }
}
